package cn.tedu.blog.server.service.impl;


import cn.tedu.blog.server.exception.ServiceException;
import cn.tedu.blog.server.mapper.CommentMapper;
import cn.tedu.blog.server.pojo.vo.CommentDetailsVo;
import cn.tedu.blog.server.pojo.vo.CommentListVo;
import cn.tedu.blog.server.service.ICommentService;
import cn.tedu.blog.server.utils.ServiceCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Slf4j
@Service
public class CommentServiceImpl implements ICommentService {

    @Autowired
    CommentMapper commentMapper;



    @Override
    public void deleteById(Long id) {
        log.info("开始执行删除评论业务  :{}", id);
//        //根据id查询数据

        CommentDetailsVo commentDetailsVo = commentMapper.getById(id);
        //判断查询结果是否为null
        if (commentDetailsVo == null) {
            String message = "删除评论失败,尝试删除的id不存在";
            log.info(message);
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND,message);

        }

        int deleteById = commentMapper.deleteById(id);
        if (deleteById != 1) {
            String message = "删除评论失败,服务器忙请稍后再试";
            log.info(message);
            throw new ServiceException(ServiceCode.ERR_UNKNOWN,message);
        }

    }



    @Override
        public void deleteImpl (Long[] ids){

            for (int i = 0; i <= ids.length; i++) {
                Long id;
                id = ids[i];
                int count = commentMapper.countById(id);
                if (count != 1) {
                    String message = "删除评论失败"+id+"不存在或已删除，请重新刷新列表再试";
                    log.info(message);
                    throw new ServiceException(ServiceCode.ERR_NOT_FOUND, message);
                }
                commentMapper.deleteByIds(ids);
                return;
            }
        }

        @Override
        public void updateStatus (Long id){
            log.info("");
            int i = commentMapper.updateStatus(id);


        }


        @Override
        public List<CommentListVo> getList () {
            log.debug("开始查询评论列表");
            return commentMapper.list();
            //直接返回Redis中缓存的数据
//        return icommentRepository.getList();

//        // 1. 尝试从Redis中获取数据
//        List<CommentListVo> com = icommentRepository.getList();
//        // 2. 如果Redis中没有有效的数据（集合为空），则尝试从MySQL中获取数据
//        if (com.size() == 0) {
//            List<CommentListVo> commentListVos = commentMapper.list();
//            // 3. 如果从MySQL中获取到数据，则将数据写入到Redis
//            if (commentListVos.size() > 0) {
//                icommentRepository.putList(commentListVos);
//                return commentListVos;
//            }
//            // 4. 如果从MySQL中没有获取到数据（集合为空），则放弃向Redis中写入数据
//        }
//        // 5. 返回Redis的查询结果 / 从MySQL中查询到的有效的、且写入到Redis中的数据
//        return com;


        }

    }
